﻿using System;
using System.Data;
using System.Data.SqlClient;
using System.Text.RegularExpressions;
using System.Web.UI;
using consultasSql;
using consultasSql.consultasVarias;
using ot;

public partial class Stdby_OrdenTrabajo_tabOrdenTrabajo_asignaNroRemito : System.Web.UI.Page
{
    private void mostrarMensaje(string mensaje)
    {
        System.Text.StringBuilder sbMensaje = new System.Text.StringBuilder();

        sbMensaje.Append("<script type='text/javascript'>");
        sbMensaje.AppendFormat("alert('{0}');", mensaje);
        sbMensaje.Append("</script>");
        ClientScript.RegisterClientScriptBlock(this.GetType(), "Mensaje", sbMensaje.ToString());
    }


    /*---------------------------------------------------------*/
    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        Response.Redirect("../tabOrdenTrabajo/asignaNroRemito.aspx", false);
    }


    /*---------------------------------------------------------*/

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            if (Session["idOt"] != null)
            {

                /*--------------*/
                //recargo la pagina para poder mostrar los botones que se activaron luego de guardar los datos, de acuerdo a los permisos
                string exito = Request.QueryString["exito"];

                if (!String.IsNullOrEmpty(exito))
                {
                    if (exito.Equals("0"))
                    {
                        mostrarMensaje(CMensajes.mensajeOperacionExitosa());

                        txtNroRemito.Enabled = false;
                        btnGenerarRemito.Visible = true;
                        btnGenerarRemito.Enabled = true;
                        btnEditar.Visible = true;
                        btnEditar.Enabled = true;
                    }
                }
                /*--------------*/


                if (!String.IsNullOrEmpty(Session["idOt"].ToString().Trim()))
                {
                    cargarCampos(Convert.ToInt32(Session["idOt"].ToString().Trim()));
                }
                else
                {
                    Response.Redirect("~/Stdby/OrdenTrabajo/tabOrdenTrabajo/ingresoOrdenTrabajo.aspx", false);
                }
            }
            else
            {
                Response.Redirect("../ingresoOrdenTrabajo/ingresoOrdenTrabajo.aspx");
            }
        }

    }


    //cargo los campos desde la tabla RemitoCab
    private void cargarCampos(int Id)
    {
        try
        {
            string consulta = "SELECT RemitoCab.Id, RemitoCab.NroRem FROM RemitoCab INNER JOIN OtCab ON RemitoCab.Id = OtCab.IdRemCab WHERE OtCab.Id = @Id";

            SqlCommand command = new SqlCommand();


            command.CommandType = CommandType.Text;
            command.CommandText = consulta;

            command.Parameters.Clear();

            command.Parameters.AddWithValue("@Id", Id);


            DataTable tabla = new CDarDataSet().darDataTable(command);

            txtNroRemito.Text = tabla.Rows[0][1].ToString();


            if (!String.IsNullOrEmpty(tabla.Rows[0][1].ToString().Trim()))
            {
                btnGenerarRemito.Visible = true;
                btnGenerarRemito.Enabled = true;
            }

        }
        catch { }

    }

    //editar
    protected void btnEditar_Click(object sender, ImageClickEventArgs e)
    {
        btnGenerarRemito.Visible = false;
        btnGenerarRemito.Enabled = false;
        btnEditar.Enabled = false;
        btnEditar.Visible = false;
        txtNroRemito.Enabled = true;

    }

    protected void btnGuardar_Click(object sender, EventArgs e)
    {
        if (comprobarCampos())
        {
            updateInsert();
        }
    }


    //comprobar campos
    private bool comprobarCampos()
    {
        lblNroRemito.Visible = false;

        txtNroRemito.ToolTip = null;

        bool bandera = true;

        try
        {
            if (!String.IsNullOrEmpty(txtNroRemito.Text.Trim()))
            {
                Regex rex = new Regex(@"^[0-9]{1,4}(\-[0-9]{8,8})?$"); //formato 0001-00001234

                if (!rex.IsMatch(txtNroRemito.Text.Trim()))
                {
                    txtNroRemito.ToolTip = "Ingrese un número de remito valido.";
                    lblNroRemito.Visible = true;
                    bandera = false;
                }
            }
            else
            {
                txtNroRemito.ToolTip = "Ingrese un valor.";
                lblNroRemito.Visible = true;
                bandera = false;
            }

        }
        catch
        {
            bandera = false;
        }

        return bandera;
    }


    //update o insertObjeto_Accesorios
    private void updateInsert()
    {
        try
        {

            CAsignaNroRemito objeto = new CAsignaNroRemito();

            objeto.IdOtCab = Convert.ToInt32(Session["idOt"].ToString().Trim());

            objeto.NroRem = txtNroRemito.Text.Trim();


            CConsultaNroRemito consulta = new CConsultaNroRemito();


            if (Session["idOt"] != null)
            {
                if (!String.IsNullOrEmpty(Session["idOt"].ToString().Trim()))
                {
                    string id = obtenerIdRemito(Convert.ToInt32(Session["idOt"].ToString().Trim()));

                    if (!String.IsNullOrEmpty(id))
                    {
                        objeto.Id = Convert.ToInt32(id);

                        if (consulta.update(objeto))
                        {
                            //si fue exitosa envio 0, para luego mostrar el mensaje
                            Response.Redirect("../tabOrdenTrabajo/asignaNroRemito.aspx?exito=0", false);
                        }
                        else
                        {
                            mostrarMensaje(CMensajes.mensajeOperacionFallida());
                        }
                    }
                    else
                    {
                        mostrarMensaje(CMensajes.mensajeOperacionFallida());
                    }
                }
                else //si es null, redirigimos, debido a que algo sucedio
                {
                    Response.Redirect("../ingresoOrdenTrabajo/ingresoOrdenTrabajo.aspx");
                }
            }
            else //si es null, redirigimos, debido a que algo sucedio
            {
                Response.Redirect("../ingresoOrdenTrabajo/ingresoOrdenTrabajo.aspx");
            }

        }
        catch
        {
            mostrarMensaje(CMensajes.mensajeOperacionFallida());
        }
    }


    //obtener id del remito relacionado
    //cargo los campos desde la tabla RemitoCab
    private string obtenerIdRemito(int Id)
    {
        try
        {
            string consulta = "SELECT IdRemCab FROM OtCab WHERE Id = @Id";

            SqlCommand command = new SqlCommand();


            command.CommandType = CommandType.Text;
            command.CommandText = consulta;

            command.Parameters.Clear();

            command.Parameters.AddWithValue("@Id", Id);


            DataTable tabla = new CDarDataSet().darDataTable(command);

            return tabla.Rows[0][0].ToString().Trim();
        }
        catch { }

        return null;
    }


    protected void btnGenerarRemito_Click(object sender, EventArgs e)
    {
        //string script = "window.open('../tabOrdenTrabajo/ReporteRemito/ReporteRemito.aspx?Reporte=PreImpresoRemito.rpt', '');";


        ////abro en otra pestaña
        //ScriptManager.RegisterStartupScript(this, typeof(Page), "popup", script, true);
    }


}